package br.com.tiespec.web.ManagedBean;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.tiespec.ejb.EjbInterface.LoginInterface;
import br.com.tiespec.model.Modelo.ClientePortal;
import br.com.tiespec.model.Modelo.ClienteProjeto;
import br.com.tiespec.model.Modelo.Plano;
import br.com.tiespec.model.Modelo.Projeto;
import br.com.tiespec.model.Modelo.Usuario;
import br.com.tiespec.web.Util.MsgUtil;

@Named("loginBean")
@SessionScoped
public class LoginBean implements Serializable {
	
	private static final long serialVersionUID = -383434990069084151L;

	@EJB LoginInterface ejb;
	
	@Inject
	private ContextoBean ctx;
	
	private Usuario usuarioInstance;
	
	@PostConstruct
	public void init(){
		usuarioInstance = new Usuario();
		usuarioInstance.setEmail("hermann_m_k@hotmail.com");
		usuarioInstance.setSenha("123");
	}
	
	public String goLoginByPass(){
		usuarioInstance = ejb.selecionarUsuario(1l);
		ClientePortal clientePortalInstance = ejb.selecionarClientePortal(1l);
		ClienteProjeto cpInstance = ejb.selecionarClienteProjeto(1l);
		Projeto pInstance = ejb.selecionarProjeto(1l);
		Plano p = ejb.selecionarPlano(clientePortalInstance.getId());
		ctx.setUsuario(usuarioInstance);
		ctx.setClienteEmContexto(clientePortalInstance);
		ctx.setPlanoCorrente(p);
		ctx.setClienteProjetoEmContexto(cpInstance);
		ctx.setProjetoEmContexto(pInstance);
		init();
		
		MsgUtil.msgInfoNotInter("Usuário Logado: " + usuarioInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Cliente Portal Em Contexto: " + clientePortalInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Cliente Projeto Em Contexto: " + cpInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Projeto Em Contexto: " + pInstance.getNome());
		MsgUtil.msgInfoNotInter("Plano Corrente: " + p.getNomePlano());
		return null;
	}
	
	public String goLogin(){
		if (usuarioInstance == null){
			MsgUtil.msgWarn("Login_UsuarioNulo");
			return null;
		}
		if (usuarioInstance.getEmail() == null || usuarioInstance.getEmail().length() < 1){
			MsgUtil.msgWarn("Login_EmailNaoInformado");
			return null;
		}
		if (usuarioInstance.getSenha() == null || usuarioInstance.getSenha().length() < 1){
			MsgUtil.msgWarn("Login_SenhaNaoInformada");
			return null;
		}
		String email = usuarioInstance.getEmail();
		usuarioInstance = ejb.selecionarUsuario(usuarioInstance.getEmail(), usuarioInstance.getSenha());
		if (usuarioInstance == null || usuarioInstance.getId() <= 0){
			MsgUtil.msgWarn("Login_UsuarioOuSenhaInvalidos");
			usuarioInstance = new Usuario();
			usuarioInstance.setEmail(email);
			return null;
		}
		
		ClientePortal clientePortalInstance = usuarioInstance.getCliente();
		ClienteProjeto cpInstance = ejb.selecionarClienteProjeto(1l);
		Projeto pInstance = ejb.selecionarProjeto(1l);
		Plano p = ejb.selecionarPlano(clientePortalInstance.getId());
		ctx.setUsuario(usuarioInstance);
		ctx.setClienteEmContexto(clientePortalInstance);
		ctx.setPlanoCorrente(p);
		ctx.setClienteProjetoEmContexto(cpInstance);
		ctx.setProjetoEmContexto(pInstance);
		
		MsgUtil.msgInfo("Login_BemVindo", usuarioInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Cliente Portal Em Contexto: " + clientePortalInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Cliente Projeto Em Contexto: " + cpInstance.getNomeCompleto());
		MsgUtil.msgInfoNotInter("Projeto Em Contexto: " + pInstance.getNome());
		MsgUtil.msgInfoNotInter("Plano Corrente: " + p.getNomePlano());
		return null;
	}
	
	public Usuario getUsuarioInstance() {
		return usuarioInstance;
	}
	
	public void setUsuarioInstance(Usuario usuarioInstance) {
		this.usuarioInstance = usuarioInstance;
	}
}